package com.example.zxd;

import java.util.Scanner;

/**
 * 华强种瓜<p>
 * 描述：
 * 华强买到了不保熟的瓜，他很生气，遂决定……
 *<p>
 * 自己种瓜！
 * 第二天，华强承包了一大片瓜田，他买来了 n2
 *  个保熟的西瓜种子，并且严格按照一个 n×n
 *  米间距的网格进行种植。为了方便华强记忆，这个网格的坐标从 1
 *  开始编号，到 n
 *  结束。
 *<p>
 * 为了让瓜保熟，他又买来了 k
 *  个洒水器，洒水器工作半径为 r
 *  米，安装在在网格中的某些种子的正上方。
 *<p>
 * 安装完这些洒水器后，华强很想知道现在他的瓜里面有多少能够被撒到水。
 *<p>
 * 输入：
 * 输入共包含 n+k
 *  行。
 *<p>
 * 第一行包含 3
 *  个整数 n
 * 、k
 *  和 r
 * ，分别表示网格边距、洒水器数量和洒水器工作半径，题目保证 1≤n,k≤200
 * 。
 *<p>
 * 接下来 k
 *  行，每行两个整数 x
 *  和 y
 * ，表示每个洒水器在网格中的坐标 (x,y)
 * 。
 *<p>
 * 输出：
 * 一行一个整数，表示被洒水器覆盖到的西瓜总数。
 *<p>
 * 样例输入：<p>
 * 5 2 1<p>
 * 3 3<p>
 * 4 2<p>
 * 样例输出：<p>
 * 8
 * @author: scarborough
 * @datetime: 2025/3/19 - 19:00
 * @status: AC
 */
public class PROB1018 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int r = sc.nextInt();

        int[][] arr = new int[n][n];
        for (int s = 0; s < k; s++) {
            int x = sc.nextInt();
            int y = sc.nextInt();
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    int distance = (x - 1 - i) * (x - 1 - i) + (y -1 - j) * (y -1 - j);
                    if(distance <= r * r) {
                        arr[i][j] = 1;
                    }
                }
            }
        }
        sc.close();

        int res = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <n; j++) {
                res +=arr[i][j];
            }
        }
        System.out.println(res);
    }
}
